#include <iostream>
#include <vector>
using namespace std;
const int N=5e3+10;
int arr[N][2];
//map<int,int> myHash;
int n,s,a,b;
int count=0;
int compare(const void *a, const void *b)
{
	const int *row1 = (const int *)a;
    const int *row2 = (const int *)b;
    return row1[1] - row2[1];
}
int main()
{
	cin>>n>>s>>a>>b;
	b+=a;
	for(int i=0;i<n;i++)
	{
		cin>>arr[i][0]>>arr[i][1];
	}
	int row=sizeof(arr)/sizeof(arr[0]);
	qsort(arr,n,sizeof(arr[0]),compare);
//	for(int i=0;i<n;i++)
//	{
//		cout<<arr[i][0]<<' '<<arr[i][1]<<endl;
//	}
//	

	for(int i=0;i<n&&s>=0;i++)
	{
		int temp=s-arr[i][1];
		if(arr[i][0]<=b&&temp>=0)
		{
			//cout<<arr[i][0]<<"arr[i][1]:"<<arr[i][1]<<endl;
			s-=arr[i][1];
			count++;
		}
		else
		continue;
	}
	cout<<count<<endl;
	return 0;
}
